Guava এর Preconditions ক্লাস ব্যবহার করে Java প্রোগ্রামে input validation বা state validation আরও সহজ এবং কার্যকরী করা যায়। এটি ডেভেলপারদের নির্দিষ্ট শর্ত যাচাই করতে এবং কোডে বাগ কমাতে সাহায্য করে।
Preconditions কী?
Preconditions হল Guava-এর একটি ইউটিলিটি ক্লাস, যা কোড এক্সিকিউট করার আগে বিভিন্ন শর্ত যাচাই করার জন্য ব্যবহৃত হয়। শর্ত ব্যর্থ হলে এটি স্বয়ংক্রিয়ভাবে Exceptions (যেমন IllegalArgumentException, NullPointerException) নিক্ষেপ করে।
Preconditions এর প্রধান মেথড
১. checkArgument
একটি আর্গুমেন্ট যাচাই করার জন্য ব্যবহৃত হয়। শর্ত ব্যর্থ হলে এটি IllegalArgumentException নিক্ষেপ করে।
Preconditions.checkArgument(expression, errorMessage);
২. checkNotNull
একটি অবজেক্ট null কিনা তা যাচাই করে। যদি null হয়, তাহলে এটি NullPointerException নিক্ষেপ করে।
Preconditions.checkNotNull(object, errorMessage);
৩. checkState
একটি অবজেক্টের বর্তমান অবস্থা যাচাই করে। শর্ত ব্যর্থ হলে এটি IllegalStateException নিক্ষেপ করে।
Preconditions.checkState(expression, errorMessage);
৪. checkElementIndex
একটি ইন্ডেক্স যাচাই করে। ইন্ডেক্স যদি বৈধ না হয়, তাহলে IndexOutOfBoundsException নিক্ষেপ করে।
Preconditions.checkElementIndex(index, size, errorMessage);
৫. checkPositionIndex
ইন্ডেক্সের অবস্থান বৈধ কিনা তা যাচাই করে। ব্যর্থ হলে IndexOutOfBoundsException নিক্ষেপ করে।
Preconditions.checkPositionIndex(index, size, errorMessage);
৬. checkPositionIndexes
শুরুর এবং শেষের ইন্ডেক্স যাচাই করে। এটি নিশ্চিত করে যে শুরু ইন্ডেক্স ছোট এবং উভয় ইন্ডেক্স বৈধ।
Preconditions.checkPositionIndexes(start, end, size);
Preconditions এর Best Practices
১. Input Validation এর জন্য ব্যবহার করুন
Preconditions ব্যবহার করে প্রোগ্রামের ইনপুট ডেটার বৈধতা যাচাই করুন। এটি ব্যবহারকারীর ভুল ইনপুটের কারণে সৃষ্ট সমস্যাগুলি এড়াতে সাহায্য করে।
public void setAge(int age) {
Preconditions.checkArgument(age > 0, "Age must be positive");
this.age = age;
}
২. Null Handling এর জন্য ব্যবহার করুন
কোডের মধ্যে null checks সুনির্দিষ্ট করতে checkNotNull ব্যবহার করুন।
public void setName(String name) {
this.name = Preconditions.checkNotNull(name, "Name cannot be null");
}
৩. Readable Error Messages ব্যবহার করুন
যাচাই ব্যর্থ হলে ব্যবহারকারীর জন্য একটি স্পষ্ট এবং অর্থপূর্ণ error message প্রদান করুন।
Preconditions.checkArgument(score >= 0 && score <= 100,
"Score must be between 0 and 100");
৪. State Validation নিশ্চিত করুন
একটি অবজেক্টের সঠিক অবস্থায় থাকার নিশ্চয়তা দিতে checkState ব্যবহার করুন।
public void start() {
Preconditions.checkState(!isStarted, "Service is already started");
isStarted = true;
}
৫. Index Validation নিশ্চিত করুন
ইন্ডেক্স নিয়ে কাজ করার সময় এটি বৈধ কিনা তা নিশ্চিত করতে checkElementIndex এবং checkPositionIndexes ব্যবহার করুন।
public int getElementAt(int index) {
return list.get(Preconditions.checkElementIndex(index, list.size(),
"Index out of bounds"));
}
৬. Overhead কমানোর জন্য প্যারামিটারাইজড মেসেজ ব্যবহার করুন
ডায়নামিক মেসেজ তৈরি করার জন্য String.format বা প্যারামিটারাইজড পদ্ধতি ব্যবহার করুন।
Preconditions.checkArgument(value > 0, "Value must be positive: %s", value);
কেন Preconditions ব্যবহার করবেন?
- কোড পরিষ্কার এবং সংক্ষিপ্ত রাখে।
NullPointerExceptionএবংIllegalArgumentException-এর ঝুঁকি কমায়।- শর্তভিত্তিক যাচাই সহজ করে।
- ডিবাগিং এবং এরর মেসেজ আরও সুনির্দিষ্ট করে।
পূর্ণাঙ্গ উদাহরণ
import com.google.common.base.Preconditions;
public class PreconditionsExample {
public static void main(String[] args) {
int age = -5;
Preconditions.checkArgument(age > 0, "Age must be positive: %s", age);
String name = null;
Preconditions.checkNotNull(name, "Name cannot be null");
int index = 5;
Preconditions.checkElementIndex(index, 3, "Index out of bounds");
}
}
সীমাবদ্ধতা
- Runtime Overhead: Preconditions সবসময় রানটাইমে যাচাই করে, যা কিছুটা পারফরম্যান্সে প্রভাব ফেলতে পারে।
- শুধুমাত্র ডেভেলপারদের জন্য সহায়ক: ব্যবহারকারীর সাথে সরাসরি ইন্টারফেসের ক্ষেত্রে
Preconditionsব্যবহার সেরা নয়।
Guava এর Preconditions ক্লাস Java প্রোগ্রামিংয়ে ইনপুট যাচাই এবং অবস্থা নিশ্চিত করার জন্য একটি শক্তিশালী টুল। এটি সঠিকভাবে ব্যবহার করলে কোড আরও নিরাপদ, সুনির্দিষ্ট এবং সহজবোধ্য হয়।
Read more